var express = require('express');
const jwt = require("jsonwebtoken")//jwt
const axios = require('axios')//axios
const config = require('./../config/config.js')//配置文件 数据库连接 及 小程序appId等
const {UserModel}=require('../models/user');
console.log(UserModel);

var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

// 生成token
let generateToken=function(user){
  let content ={name:user}; // 要生成token的主题信息
  let secretOrPrivateKey = config.jwtSecret // 这是加密的key（密钥） 
  // 生成token
  return jwt.sign(content, secretOrPrivateKey, {
    expiresIn: 60 * 60 * 1 // 1小时过期
  });
}
// UserModel.create({},function(){

// })
  obj={
        username:"吴晓勇",
        work:"6年工作经验",
        Age:"30岁",
        education:"本科",
        advantage:'3年工作经验，参与并制作了很多互联网产品0到1的过程,主要设计领域为互联网金融',
        status:"离职",
        expect:"web前端9-12K",
        address:"北京",
        industry:"行业不限"
   }
router.post('/login',(req,res)=>{
  let {username,appId,appSecret,code,password}=req.body
  // 请求wx api 换取openId
  let queryString=`appid=${appId}&secret=${appSecret}&js_code=${code}&grant_type=authorization_code`
  let wxAPI=`https://api.weixin.qq.com/sns/jscode2session?${queryString}`
  axios.get(wxAPI)
  .then(response=>{
    console.log(response);
    // 先查询 数据库 是否有
    UserModel.find({openId:response.data.openid},function(err,data){
      if(!err ){
        // 如果数据库中有这个人
        console.log(data);
        if(data){
          // console.log(data);
          // 生成token 并返回token到前台
          UserModel.findOne({username:username},(err,doc)=>{
            res.send({
              code:200,
              msg:'登录成功',
              // token:generateToken(username),
              succeqss:doc
            })
          })
        
        }else{
          console.log('未查询到数据');
          // 数据库中没有数据 则插入记录 并也一并返回token
          UserModel.create({
            username:username,
            password:password,
            openId:response.data.openid,

          },function(err,doc){
            if(!err){
              console.log(arguments,8888);
            
              res.send({
                msg:'未查询到数据,并已自动创建数据',
                // token:generateToken(username)
              })
            }else{
              res.send({
                  code:400,
                  msg:"注册失败"
              })
            }
          })
        }
      }else{
        console.log(err);
      }
    })
  })
})

router.post('/auth',function(req,res){
  let token = req.headers.token;
  console.log(token);
  if (token) {
    console.log('token exist');
    jwt.verify(token, config.jwtSecret, (err, decoded) => {
      console.log('jwt.verify');
      if (err) {
        console.log('err');
        if (err.name === ' TokenExpiredError') {
          console.log('认证码失效，请重新登录!');
          return res.status(401).json({ error: '认证码失效，请重新登录!' });
        } else {
          console.log('认证失败! ');
          return res.status(401).json({ error: '认证失败! ' });
        }
      } else {
        // if(decoded . openid) {
        // req.openid = decoded.openid;
        console.log('req.openid = decoded.openid;');
        return res.status(200).json({ message: '已登录' });
        //} else {
        //.... console.log('认证 失败!');
        //res. status(401).json({，error:'认证失败! '});
        //}
      }
    });
  } else {
    console.log("no token");
    return res.status(403).json({
      error: ' 请提供认证码!'
    });
  }
})



 



module.exports = router;
